﻿// JScript 文件
var Browser = new Object();
Browser.isMozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument!='undefined');
Browser.isIE = window.ActiveXObject ? true : false;
Browser.isFirefox = (navigator.userAgent.toLowerCase().indexOf("firefox")!=-1);
Browser.isOpera = (navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
if (Browser.isFirefox) {
	//extendEventObject();
}

var $ = function(dName){
    return document.getElementById(dName);
};

//function extendEventObject() {
//	Object.prototype.attachEvent = function(type, fc){
//	    this.addEventListener(type.toLowerCase().replace(/^on/ig, ""), fc, false);
//	};
//	
//	Object.prototype.detachEvent = function(type, fc){
//	    this.removeEventListener(type.toLowerCase().replace(/^on/ig, ""), fc, false);
//	};

//	Event.prototype.__defineGetter__("srcElement", function() {
//	    var node = this.target;
//	    if (node != null) {
//	        while (node.nodeType != 1) node = node.parentNode;
//	        return node;
//	    }
//	});

//	Event.prototype.__defineGetter__("fromElement", function() {
//	    var node;
//	    if (this.type == "mouseover")
//	        node = this.relatedTarget;
//	    else if (this.type == "mouseout")
//	        node = this.target;
//	    if (!node) return;
//	    if (node != null) {
//	        while (node.nodeType != 1) node = node.parentNode;
//	        return node;
//	    }
//	});

//	Event.prototype.__defineGetter__("toElement", function() {
//	    var node;
//	    if (this.type == "mouseout")
//	        node = this.relatedTarget;
//	    else if (this.type == "mouseover")
//	        node = this.target;
//	    if (!node) return;
//	    if (node != null) {
//	        while (node.nodeType != 1) node = node.parentNode;
//	        return node;
//	    }
//	});
//}

//////////////////
// Helper Funcs //
//////////////////

// used to find the Automation object name
function getDomDocumentPrefix() {
	if (getDomDocumentPrefix.prefix)
		return getDomDocumentPrefix.prefix;
	
	var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
	var o;
	for (var i = 0; i < prefixes.length; i++) {
		try {
			// try to create the objects
			o = new ActiveXObject(prefixes[i] + ".DomDocument");
			return getDomDocumentPrefix.prefix = prefixes[i];
		}
		catch (ex) {};
	}
	
	throw new Error("Could not find an installed XML parser");
}

function getXmlHttpPrefix() {
	if (getXmlHttpPrefix.prefix)
		return getXmlHttpPrefix.prefix;
	
	var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
	var o;
	for (var i = 0; i < prefixes.length; i++) {
		try {
			// try to create the objects
			o = new ActiveXObject(prefixes[i] + ".XmlHttp");
			return getXmlHttpPrefix.prefix = prefixes[i];
		}
		catch (ex) {};
	}
	
	throw new Error("Could not find an installed XMLHttp object");
}


//////////////////////////
// Start the Real Funcs //
//////////////////////////

// XmlHttp factory
function XmlHttp() {}

XmlHttp.create = function () {
	try {
		// NS & MOZ
		if (window.XMLHttpRequest) {
			var req = new XMLHttpRequest();
			
			// some versions of Moz do not support the readyState property
			// and the onreadystate event so we patch it!
			if (req.readyState == null) {
				req.readyState = 1;
				req.addEventListener("load", function () {
					req.readyState = 4;
					if (typeof req.onreadystatechange == "function")
						req.onreadystatechange();
				}, false);
			}
			
			return req;
		}
		// IE
		if (window.ActiveXObject) {
			return new ActiveXObject(getXmlHttpPrefix() + ".XmlHttp");
		}
	}
	catch (ex) {}
	// Fail
	throw new Error("Your browser does not support XmlHttp objects");
};

// XmlDocument factory
function XmlDocument() {}

XmlDocument.create = function () {
	try {
		// DOM2, MOZ & NS
		if (document.implementation && document.implementation.createDocument) {
			var doc = document.implementation.createDocument("", "", null);
			
			// some versions of Moz do not support the readyState property
			// and the onreadystate event so we patch it!
			if (doc.readyState == null) {
				doc.readyState = 1;
				doc.addEventListener("load", function () {
					doc.readyState = 4;
					if (typeof doc.onreadystatechange == "function")
						doc.onreadystatechange();
				}, false);
			}
			
			return doc;
		}
		if (window.ActiveXObject)
			return new ActiveXObject(getDomDocumentPrefix() + ".DomDocument");
	}
	catch (ex) {}
	throw new Error("Your browser does not support XmlDocument objects");
};

// Create the loadXML method and xml getter for Mozilla
if (window.DOMParser &&
	window.XMLSerializer &&
	window.Node && Node.prototype && Node.prototype.__defineGetter__) {

	// XMLDocument did not extend the Document interface in some versions
	// of Mozilla. Extend both!
	//XMLDocument.prototype.loadXML = 
	Document.prototype.loadXML = function (s) {
		
		// parse the string to a new doc	
		var doc2 = (new DOMParser()).parseFromString(s, "text/xml");
		
		// remove all initial children
		while (this.hasChildNodes())
			this.removeChild(this.lastChild);
			
		// insert and import nodes
		for (var i = 0; i < doc2.childNodes.length; i++) {
			this.appendChild(this.importNode(doc2.childNodes[i], true));
		}
	};
	
	
	/*
	 * xml getter
	 *
	 * This serializes the DOM tree to an XML String
	 *
	 * Usage: var sXml = oNode.xml
	 *
	 */
	Document.prototype.__defineGetter__("xml", function () {
		return (new XMLSerializer()).serializeToString(this);
	});
}

var  isIE = document.all?true:false;

if (!isIE){
    var  ex;
    XMLDocument.prototype.__defineGetter__( "xml" ,  function (){
         try {
             return   new  XMLSerializer().serializeToString( this );
        } catch (ex){
             var  d  =  document.createElement( "div" );
            d.appendChild( this .cloneNode( true ));
             return  d.innerHTML;
        }
    });
    Element.prototype.__defineGetter__( "xml" ,  function (){
         try {
             return   new  XMLSerializer().serializeToString( this );
        } catch (ex){
             var  d  =  document.createElement( "div" );
            d.appendChild( this .cloneNode( true ));
             return  d.innerHTML;
        }
    });
    XMLDocument.prototype.__defineGetter__( "text" ,  function (){
         return   this .firstChild.textContent
    });
    Element.prototype.__defineGetter__( "text" ,  function (){
         return   this .textContent
    });




    XMLDocument.prototype.selectSingleNode = Element.prototype.selectSingleNode = function (xpath){
         var  x = this .selectNodes(xpath)
         if ( ! x  ||  x.length < 1 ) return   null ;
         return  x[ 0 ];
    }
    XMLDocument.prototype.selectNodes = Element.prototype.selectNodes = function (xpath){
         var xpe = new XPathEvaluator();
         var doc = (this.ownerDocument==null)?(this.documentElement):(this.ownerDocument.documentElement);
         var nsResolver = xpe.createNSResolver(doc);
         var result = xpe.evaluate(xpath,this,nsResolver,0,null);
         var found = new Array();
         var res;
         while  (res  ==  result.iterateNext())
            found.push(res);
         return  found;
    }
}

//length 为中文字符长度  replaceMent 为截断字符串后，替换的字符
String.prototype.cutToString = function cutToString(length, replaceMent)
{
    if(this.length > length)
    {
        length = length * 2;
        var s = "",temp;
        var count=0, i=0;
        while(count<length)
        {
            temp = this.substr(i++, 1);
            if(temp.charCodeAt(0) <= 127)
                count += 1;
            else
                count += 2;
            if(count <= length)
                s += temp;
        }
        return s + replaceMent;
    }
    else
        return this.toString();
}
 function getPosXY(a,offset)
  {
    var tn=null;
	var p=offset?offset.slice(0):[0,0];
	while(a)
	{
		tn=a.tagName.toUpperCase();
		
		p[0]+=a.offsetLeft-(tn=="DIV"&&a.scrollLeft?a.scrollLeft:0);
		p[1]+=a.offsetTop-(tn=="DIV"&&a.scrollTop?a.scrollTop:0);
		if(tn=="BODY")
		   break;
		a=a.offsetParent;
	}
	
	return p;
  }

//Cookie处理类
var Cookie=new Object();
Cookie.setCookie=function(name,value,expireHours){
  var str= name+"="+escape(value);
  if(expireHours!=null){
        var date=new Date();
        var ms=expireHours*3600*1000;
        date.setTime(date.getTime()+ms);
        str+="; expire="+date.toGMTString();
        
   
  }  

  document.cookie=str;  
  
}
Cookie.getCookie=function(name){
   var cookieArray=document.cookie.split("; ");   
   for(var i=0;i<cookieArray.length;i++){       
      var arr=cookieArray[i].split("=");     
      if(arr[0]==name){         
         return unescape(arr[1]);
      }
   }
   return "";

}
Cookie.deleteCookie=function(name){
   this.setCookie(name,"",-1000);

}
